package configstc

// LogConfig 日志配置
type LogConfig struct {
	//部分还是使用老配置
	pastLogConfig

	//日志路径
	LPath string `default:"./runtime/logs/app.log" yaml:"LPath"`

	//是否包含文件路径
	// 0: 不包含，1：短文件名，2：完整路径
	LFilepath int `default:"0" yaml:"LFilepath"`

	//日志等级，与LogLevel一致
	LLevel string `default:"debug" yaml:"LLoglevel"`

	//对应 runtime.Caller
	LCallerSkip int `default:"0" yaml:"LCallerSkip"`
}

// pastLogConfig 之前的配置
type pastLogConfig struct {
	LogPath  string `default:"" yaml:"LogPath"`
	LogLevel string `default:"debug" yaml:"LogLevel"`

	LogMaxSize    int `default:"512" yaml:"LogMaxSize"`
	LogMaxAge     int `default:"7" yaml:"LogMaxAge"`
	LogMaxBackups int `default:"7" yaml:"LogMaxBackups"`

	LogSyncStdOut bool `default:"false" yaml:"LogSyncStdOut"` //是否同步输出至标准输出
	LogCompress   bool `default:"false" yaml:"LogCompress"`
}

// DefiLogConfig 默认日志配置
func DefiLogConfig() *LogConfig {
	return &LogConfig{
		pastLogConfig: pastLogConfig{
			LogPath:       "./runtime/logs/app.log",
			LogMaxSize:    128,   // 每个日志文件保存的大小 单位:M
			LogMaxAge:     7,     // 文件最多保存多少天
			LogMaxBackups: 30,    // 日志文件最多保存多少个备份
			LogCompress:   false, // 是否压缩

			LogSyncStdOut: true,
			LogLevel:      "Debug",
		},

		LPath:       "./runtime/logs/app.log",
		LFilepath:   1,
		LLevel:      "debug",
		LCallerSkip: 0,
	}
}
